1. Field of the Invention
The present invention relates to the field of computer software and, in particular, to a system and method for automatic transfer of data and interface integrity enforcement between two or more linked software services, including but not limited to Web Services and semantic-based programming constructs, with arbitrarily defined and optionally complex input/output data structures.
2. Description of the Related Art
In a service-oriented program, mapping and transferring data between the inputs and outputs of dependent software services, including but not limited to Web Services, running in a related sequence, is one of the most time-consuming software development tasks. In the current art, most of these mappings are manually coded in object-oriented programming languages such as C++, Java and C# and/or in syntax-based scripting languages such as XSLT. The manual coding of data transfer between related software services results in hard-coded, and one-off solutions that are hard to create and time consuming to debug, and maintain. On the other hand, there are a few graphical mapping and automated data transfer tools used in the area of message-oriented application integration. These tools are best suited for mapping message documents with simple to average complexity of structure and limited nested plurality, and when applied to mapping optionally complex data structures resulting from input/output of software services, suffer from lack of many-to-many mapping functionality, performance and scalability. Furthermore, the current art is missing a high-performance mechanism for automatically enforcing data integrity for input and output data of a software service at runtime.
The current art of service-oriented programming and application development is lacking a specialized semantic-based means of mapping data from arbitrary data structures between the outputs and inputs of software services (as well as between semantic-based programming constructs) that has a scalable and high performance system for automatic transfer of data and integrity enforcement at runtime based on a semantic description. The absence of the said high performance, scalable mechanism that can apply to software services can seriously restrict the applications of service-oriented programming and architecture.
3. General Background
A software service, or service for short, including but not limited to a Web service, is a discrete software task that has a well-defined interface and may be accessible over the local and/or public computer networks or maybe only available on a single machine. Web services can be published, discovered, described, and accessed using standard-based protocols such as UDDI, WSDL, and SOAP/HTTP.
A software service interface, in concept, represents the inputs and outputs of a black-boxed software service as well as the properties of that service, such as name and location. Take, for example, the interface of a simple software service named GetStockQuote, which retrieves simple stock quote information [FIG. 1]. This service takes a ticker symbol input and returns the last trade price amount as well as some additional stock quote details, such as the day high and day low. Note that in order to use, or consume, a service, only knowledge of its interface is required. This means that as long as the interface of a service remains the same, different implementations of the service can be swapped in and out without affecting its consumers. This, as well as the fact that a service is a language- and platform-neutral concept, is one of the keys to the flexibility of service-oriented architectures.
An atomic service is a software service that is implemented directly by a segment of software code. In the existing NextAxiom™ HyperService™ Platform, atomic Web services are dispatched via a library. A library is a light, language- and platform-neutral wrapper that is linked to one or more atomic Web service implementations. Atomic Web services are logically indivisible Web services that represent “raw materials” to the HyperService™ platform.
A composite service is a software service that consumes any number of other atomic or composite services. In the HyperService™ platform, a composite Web service is implemented with a metadata-driven model that is automatically interpreted by a high-performance run-time engine.
Visual metadata models, which represent composite software services implementations to the HyperService™ system, are created in a graphical, design-time environment and stored as XML models. This environment offers a new and powerful visual modeling paradigm that can be leveraged to enable the visual modeling of transactional behavior. This environment was specifically designed to enable collaborative, on-the-fly creation of software services by business process analysts or functional experts, who understand the business logic and application required to implement real-world business processes and applications, but have no knowledge of programming paradigms or Web service protocols. FIG. 2 captures the implementation of a composite software service named “Expedite 3000 Series”. This service is used by a master planner to expedite 3000-series inventory items when they fall short on the shop floor. This service was developed collaboratively and reuses services that were selectively exposed by the Inventory and Purchasing departments to the developers of this service.
Any software service that is consumed by a composite service model is said to be “nested” or “embedded” within that composite service. FIG. 3 depicts a hypothetical composite service that resides in Chicago. This software service is composed of other composite services that are distributed across the country.